 #include "drv_systick.h"
static uint16_t fs_us=0;
static uint16_t fs_ms=0;
/**************************************
函数名：drv_systick_init
函数功能：systick初始化
输入参数：系统时钟频率
输出参数：无
其它：
****************************************/
void drv_systick_init(uint32_t systick)
{
	SysTick->CTRL &= ~0x05;//关闭定时器，时钟8分频
	
	fs_us = systick/8;//计时1us的时间需要计次数
	fs_ms = 1000*fs_us;//计时1ms的时间需要计的次数	
}
/**************************************
函数名：drv_systick_ms
函数功能：systick毫秒延时函数
输入参数：ms:需要延时的毫秒数
输出参数：无
其它：暂未考虑溢出问题，会有溢出风险
****************************************/
void drv_systick_ms(uint16_t ms)
{
	uint32_t temp=0;
		
	SysTick->LOAD = ms*fs_ms;//延时时间需要计总次数
	SysTick->VAL = 0;//清空当前值寄存器
	SysTick->CTRL |= 0x01;//开启定时器
	do
	{
		temp = SysTick->CTRL;//获取控制状态寄存器的值
	}
	while(!(temp & (0x01<<16)));//判断定时时间是否到
	SysTick->CTRL &= ~0x01;//关闭定时器
}
